package com.yh.service;

import com.yh.entity.User;
import com.yh.vo.CustomPageAndNavigate;
import com.yh.vo.LoginVO;
import com.yh.vo.UserVO;

/**
 * @author yuhuan
 * @date 2022/01/13
 */
public interface UserService {
    /**
     * 查询所有用户
     *
     * @param pageNum  当前页
     * @param pageSize 页大小
     * @return 返回自定义的分页信息
     */
    public CustomPageAndNavigate<UserVO> findUserAll(Integer pageNum, Integer pageSize);

    /**
     * 获取用户信息（先从缓存中获取，没有再到数据库获取）
     *
     * @param userId 用户的ID
     * @return 返回用户的详情
     */
    public UserVO findUserById(String userId);

    /**
     * 从redis中获取用户的信息
     *
     * @param userId 用户的ID
     * @return 返回查询到的用户信息
     */
    public User findUserByIdFromRedis(String userId);

    /**
     * 获取用户的登录信息（会剔除用户的敏感信息）
     *
     * @param userId 用户的ID
     * @return 返回用户详情
     */
    public UserVO findLoginUserById(String userId);

    /**
     * 用户账号注册，会生成随机的用户昵称
     *
     * @param vo 用户注册的基本信息
     * @return 返回响应的状态码
     */
    public int userRegister(LoginVO vo);

    /**
     * 修改用户信息
     *
     * @param userVO 需要修改的用户信息
     * @return 返回响应的状态码
     */
    public int updateUserData(UserVO userVO);

    /**
     * 修改密码
     *
     * @param userVO 需要修改的用户信息
     * @return 返回响应的状态码
     */
    public int updatePassWord(UserVO userVO);
}
